<!-- 

 -->

<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
</head>

<body>
    <script>
        var obj = {
            id: 1,
            name: 'andy',
            msg: {
                age: 18
            },
            color: ['pink', 'red', 'black']
        };
        var o = {};
        //封装函数
        function deepCopy(newobj, oldobj) {  //新对象，旧对象
            for (var k in oldobj) {
                //判断我们的属性是属于哪种数据类型
                //获取属性值
                var item = oldobj[k];  //item接收一个就对象的的值
                //2.判断值是否是数组
                if (item instanceof Array) {
                    newobj[k] = []; //把数组中的值赋值   相当于操作 o.color=[]
                    deepCopy(newobj[k], item)
                } else if (item instanceof Object) {
                    //3.判断是否是对象
                    newobj[k] = {};
                    deepCopy(newobj[k], item)
                } else {
                    //4.判断是否是简单数据类型
                    newobj[k] = item;

                    //问题：数组是在哪里赋值的
                    //如果是数组创建[]，然后通过递归，把obj数组里面的值(简单数据类型)添加到o数组

                }

            }
        }
        deepCopy(o, obj)
        console.log(o);
        o.msg.age = 40;
        console.log(obj);
    </script>
</body>

</html>